#include <stdlib.h>

#include "statistiques.h"




unsigned int calculer_somme_stats(const struct etat_partie* partie,
                                  const char champ,
                                  const struct base_donnees* donnees)
{
    switch(champ)
    {
        case PUISSANCE:
            return get_puissance_perm(partie)
                   + get_puissance_objet(donnees, partie->arme)
                   + get_puissance_objet(donnees, partie->veste)
                   + get_puissance_objet(donnees, partie->gants)
                   + get_puissance_objet(donnees, partie->chaussures)
                   + get_puissance_objet(donnees, partie->accessoire);
            break;
        case POINTS_VIE:
            return get_pv_max_perm(partie)
                   + get_pv_objet(donnees, partie->arme)
                   + get_pv_objet(donnees, partie->veste)
                   + get_pv_objet(donnees, partie->gants)
                   + get_pv_objet(donnees, partie->chaussures)
                   + get_pv_objet(donnees, partie->accessoire);
            break;
        case VITESSE_CHARGE:
            return get_vitesse_charge_perm(partie)
                   + get_vitesse_charge_objet(donnees, partie->arme)
                   + get_vitesse_charge_objet(donnees, partie->veste)
                   + get_vitesse_charge_objet(donnees, partie->gants)
                   + get_vitesse_charge_objet(donnees, partie->chaussures)
                   + get_vitesse_charge_objet(donnees, partie->accessoire);
            break;
        case VITESSE_DEPLACEMENT:
            return get_vitesse_deplacement_perm(partie)
                   + get_vitesse_deplacement_objet(donnees, partie->arme)
                   + get_vitesse_deplacement_objet(donnees, partie->veste)
                   + get_vitesse_deplacement_objet(donnees, partie->gants)
                   + get_vitesse_deplacement_objet(donnees, partie->chaussures)
                   + get_vitesse_deplacement_objet(donnees, partie->accessoire);
            break;
        default:
            printf("Erreur dans calculer_somme_stats : champ = %d\n", champ);
            exit(EXIT_FAILURE);
            break;
    }
}




void init_stats_temporaires(struct etat_bataille* bataille, const struct etat_partie* partie, const struct base_donnees* donnees)
{
    bataille->stats_temp.puissance = calculer_somme_stats(partie, PUISSANCE, donnees);
    bataille->stats_temp.pv_max = calculer_somme_stats(partie, POINTS_VIE, donnees);
    bataille->stats_temp.vitesse_charge = calculer_somme_stats(partie, VITESSE_CHARGE, donnees);
    bataille->stats_temp.vitesse_deplacement = calculer_somme_stats(partie, VITESSE_DEPLACEMENT, donnees);
}
